#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//long long Greatestcommon(long long m, long long n)
//{
//	long long max = 0;
//	while (m%n)
//	{
//		max = m%n;
//		m = n;
//		n = max;
//	}
//	return max;
//}
//int main()
//{
//	long long m = 0;//18
//	scanf("%ld", &m);
//	long long n = 0;//20
//	scanf("%ld", &n);
//	if (m%n == 0 || n%m == 0)
//	{
//		printf("%d", m + n);
//		return 0;
//	}
//	long long max = Greatestcommon(m, n);
//	long long min = 0;
//	min = (m*n) / max;
//	printf("%ld\n", max + min);
//	return 0;
//}

//int compare(int *a, int *b)
//{
//	return *a - *b;
//}
//int main()
//{
//	int arr[4] = { 0 };
//	for (int i = 0; i<4; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), compare);
//	printf("%d", arr[3]);
//	return 0;
//}

float max(float a, float b, float c)
{
	if (a>b)
	{
		if (a>c)
			return a;
		else
			return c;
	}
	if (a<b)
	{
		if (b>c)
			return b;
		else
			return c;
	}
}
int main()
{
	float a = 0;
	float b = 0;
	float c = 0;
	scanf("%lf %lf %lf", &a, &b, &c);
	float x = max(a + b, b, c);
	float y = max(a, b + c, c);
	float z = max(a, b, b + c);
	printf("%.2lf", x / (y + z));
	return 0;
}